/*! eat_in_hall 2019-04-16 */
define("/common/js/app", [ "router" ], function(require, exports, module) {
    var router = require("router");
    //注册组件 , 帖子列表
    var app = function(params) {
        app.wxLoad = null;
        //app.wx = require("jweixin");
        app.params = {
            versions: "6.7",
            userVersions: "2.4",
            urlChangeFromComponent: 1,
            debug: true,
            urlCache: {},
            loadPage: 0,
            plugUrl: "/",
            bindPhone: false,
            apiDomain: "http://tenement.com/",
            //不带"/"
            //domain: 'http://www.codecamp.com', 
            loginUrl: "https://login.bestsmartbee.com/"
        };
        for (var i in params) {
            app.params[i] = params[i];
        }
        app.pageData = {};
        var fun = {
            setWxShareData: function() {
                if (!app.isWeiXin()) {
                    return;
                }
                if (app.params.DefShareData) {
                    app.wxDefShare(app.params.DefShareData);
                } else {}
            },
            isWeiXin: function() {
                //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息，这个属性可以用来判断浏览器类型
                var ua = window.navigator.userAgent.toLowerCase();
                //通过正则表达式匹配ua中是否含有MicroMessenger字符串
                if (ua.match(/MicroMessenger/i) == "micromessenger") {
                    return true;
                } else {
                    return false;
                }
            },
            isAlipay: function() {
                //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息，这个属性可以用来判断浏览器类型
                var ua = window.navigator.userAgent.toLowerCase();
                if (ua.match(/Alipay/i) == "alipay") {
                    return true;
                } else {
                    return false;
                }
            },
            //实例化VueApp
            init: function() {
                //创建和挂载根实例
                var VueApp = new Vue({
                    router: router,
                    watch: {
                        // 如果路由有变化，会再次执行该方法
                        $route: "fetchData"
                    },
                    mounted: function() {
                        this.fetchData();
                        app.setWxShareData();
                    },
                    methods: {
                        fetchData: function() {
                            //  console.log(this.$route);
                            var name = this.$route.name;
                            var options = app.findOptionsByName(name);
                            if (!options.name) {
                                return;
                            }
                            var hash = window.location.hash;
                            if (hash && hash.indexOf("component_") > -1) {
                                return false;
                            }
                            var id = "#page" + app.ucfirst(name);
                            var wrap = "#router-view-tmp";
                            //页面是要缓存的
                            if (options.page == "cache") {
                                wrap = "#router-view-cache";
                            } else {
                                wrap = "#router-view-tmp";
                                // 如果是组件路由发生变化，不清缓存
                                // if(app.params.urlChangeFromComponent==1){
                                //     $(wrap).html("");
                                // }
                                // console.log(app.params.preRoute);
                                // if ($(id).length > 0  && $(id).attr('url') !=window.location.href) {
                                //    var url = $(id).attr('url');
                                //    $(id).remove();
                                // }
                                if ($(id).length > 0) {
                                    $(id).remove();
                                }
                            }
                            if ($(id).length > 0 && $(id).attr("url") != window.location.href) {
                                var url = $(id).attr("url");
                                $(id).remove();
                            }
                            app.params.preRoute = name;
                            $(".page").addClass("cached").removeClass("pageShow");
                            var loadingPage = '<div class="loadingPage" style="text-align: center;margin-top: 100px;">正在为您努力加载页面。。。。</div>';
                            $("body").append(loadingPage);
                            if (options.title) {
                                app.setTitle(options.title);
                            }
                            if ($(id).length > 0) {
                                $(id).removeClass("cached").addClass("pageShow");
                                $(".loadingPage").remove();
                                var pageVm = app.getVm(name);
                                if (pageVm) {
                                    typeof pageVm.pageShow === "function" ? pageVm.pageShow() : "";
                                }
                                if (typeof app.pageShow == "function") {
                                    app.pageShow({
                                        name: name,
                                        vm: pageVm
                                    });
                                }
                            } else {
                                app.routePage(name, wrap);
                            }
                        }
                    }
                }).$mount("#app");
                if (typeof app.afterInit == "function") {
                    app.afterInit();
                }
            },
            // 加载组件
            component: function(name, params) {
                // app.params.urlChangeFromComponent=1;
                require.async("/component/template_js/" + name, function(html) {
                    // console.log(html);
                    var id = "component_" + name;
                    app.popup(id, html, "body");
                    window.location.href = "#" + id;
                    $(".popupBg").remove();
                    require.async("/component/" + name, function(component) {
                        component.vue(params);
                        // app.params.urlChangeFromComponent=0;
                        $("#" + id).addClass("page").addClass("popup_page");
                    });
                });
            },
            wxShare: function(params, callblack) {
                var data = {
                    title: params["title"],
                    // 分享标题
                    link: params["url"] ? params["url"] : window.location.href,
                    // 分享链接
                    imgUrl: params["imgUrl"],
                    // 分享图标
                    desc: params["desc"],
                    success: function() {},
                    cancel: function() {}
                };
                app.wx(function(wx) {
                    // console.log(data);
                    wx.onMenuShareTimeline(data);
                    wx.onMenuShareAppMessage(data);
                    callblack ? callblack() : "";
                });
            },
            wx: function(callblack) {
                require.async("jweixin", function(wx) {
                    app.wx = wx;
                    typeof callblack == "function" ? callblack(wx) : "";
                });
            },
            //传入一个name ， 会加载对应的html ,和js , 生成id : page-id
            routePage: function(name, wrap, ajax) {
                if (!name) {
                    return false;
                }
                // console.log(name);
                // component
                // 默认的
                if (!wrap) {
                    wrap = "#router-view-tmp";
                }
                var id = "page" + app.ucfirst(name);
                console.log("template_js/" + name);
                require.async("template_js/" + name, function(content) {
                    if (typeof content == "string") {
                        content = content.replace(/<img/g, "<img onerror=\"javascript:this.src='https://img.bestsmartbee.com/1536138807127'\" ");
                    }
                    var url = window.location.href;
                    if (ajax == 1) {
                        content = $("<div>" + content + "</div>").find(".ajaxPageContent").html();
                        content = "<div url=" + url + " id='" + id + "'>" + content + "</div>";
                    } else {
                        content = "<div url=" + url + " class='page pageShow' id='" + id + "'>" + content + "</div>";
                    }
                    var wrapContent = $(content);
                    $(wrapContent).hide();
                    $(wrapContent).appendTo(wrap);
                    var pageId = "#" + id;
                    var options = {
                        name: name
                    };
                    // console.log("js/" + name);
                    require.async("js/" + name, function(controller) {
                        // console.log(options);
                        // console.log(options,controller.pageShow);
                        controller.vue(options);
                        var vm = controller.vm;
                        $(pageId).show();
                        $(".loadingPage").remove();
                        if ($(pageId).find(".page-content").length > 0) {
                            app.scrollPreventDefault($(pageId).find(".page-content").eq(0));
                        }
                        if (typeof vm.pageShow == "function") {
                            vm.pageShow(options);
                        }
                        if (typeof app.pageShow == "function") {
                            options.vm = controller.vm;
                            app.pageShow(options);
                        }
                    });
                });
            },
            //禁用滚动
            scrollPreventDefault: function(pageContent) {
                function pageContentTouchstart() {
                    var el = this;
                    var top = el.scrollTop, totalScroll = el.scrollHeight, currentScroll = top + el.offsetHeight;
                    if (top === 0) {
                        $(el).attr("_isScroller", 1);
                        el.scrollTop = 2;
                    } else if (currentScroll === totalScroll) {
                        $(el).attr("_isScroller", 1);
                        el.scrollTop = top - 2;
                    }
                }
                function pageContentTouchmove() {
                    var el = this;
                    var top = el.scrollTop, totalScroll = el.scrollHeight, currentScroll = top + el.offsetHeight;
                    if (top === 0) {
                        $(el).attr("_isScroller", 0);
                    } else if (currentScroll === totalScroll) {
                        $(el).attr("_isScroller", 0);
                    }
                }
                function preventDefault(evt) {
                    var _isScroller = $(".pageShow .page-content").attr("_isScroller");
                    //pageContent 滚动到底部或顶部时禁用滚动
                    if (_isScroller == "0") {
                        evt.preventDefault();
                    }
                }
                //判断pageContent 滚动的位置， 如果滚动到顶部或底部， 禁用滚动
                $(pageContent).unbind("touchstart", pageContentTouchstart).bind("touchstart", pageContentTouchstart);
                $(pageContent).unbind("touchmove", pageContentTouchmove).bind("touchstart", pageContentTouchmove);
                //当pageContent顶部或底部， body是不能能滚动
                $("body").unbind("touchmove", preventDefault).bind("touchmove", preventDefault);
                //评价用户作品添加滚动效果
                // $(".add-comment-info").on("touchmove", function(event) {
                //     event.stopPropagation();
                // });
                // $(".add-comment-info").on("touchend", function(event) {
                //     event.stopPropagation();
                //     document.body.scrollTop = 0;
                // });
                //头部不能能滚动
                $("#header").unbind("touchmove").bind("touchmove", function(evt) {
                    evt.preventDefault();
                });
                //底部不能能滚动
                $(".bottom-fixed").unbind("touchmove").bind("touchmove", function(evt) {
                    evt.preventDefault();
                });
            },
            //找到这路由的配置
            findOptionsByName: function(name) {
                var options = router.options.routes;
                for (var item in options) {
                    if (name == options[item]["name"]) {
                        return options[item];
                    }
                }
                return {};
            },
            confirm: function(params) {
                //  $(".confirm").remove();
                // $("body").find(".popupBg").remove();
                var confirmText = params.confirmText ? params.confirmText : "确定";
                var cancelText = params.cancelText ? params.cancelText : "取消";
                var html = '<div class="confirm" id="appConfirm">';
                html += '<div class="confirm-text">' + params.text + "</div>";
                html += '<ul class="confirm-options">';
                html += '<li class="bl">' + cancelText + "</li> <li>" + confirmText + "</li>";
                html += "</ul>";
                html += "</div>";
                var yes = params.yes;
                $("body").append(html);
                // if ($("body").find(".popupBg").length > 0) {
                //     $("body").find(".popupBg").remove();
                // }
                $('<div class="popupBg"></div>').insertBefore("#appConfirm");
                $(".popupBg").unbind("click").bind("click", function() {
                    app.confirmNo();
                });
                $("#appConfirm .confirm-options li").eq(0).click(function() {
                    app.confirmNo(params.no);
                });
                var left = $(".confirm").width() / 2;
                $(".confirm").css("margin-left", "-" + left + "px");
                $("#appConfirm .confirm-options li").eq(1).click(function() {
                    app.confirmNo();
                    yes ? yes() : "";
                });
            },
            confirmNo: function() {
                $(".confirm").remove();
                $("body").find(".popupBg").remove();
            },
            //操作选项
            handle: function(params) {
                var optionsHtml = "";
                for (var i in params) {
                    optionsHtml += '<div class="handle-options-one">' + params[i]["text"] + "</div>";
                }
                var html = '<div class="handle-options">';
                html += '<div class="handle-options-group">';
                html += optionsHtml;
                html += " </div>";
                html += '<div class="handle-options-last colse">取消</div>';
                html += " </div>";
                app.popup("handle", html);
                $(".handle-options-one").click(function() {
                    var callblack = params[$(this).index()]["methods"];
                    callblack ? callblack() : "";
                    $("#handle").prev().remove();
                    $("#handle").remove();
                });
            },
            colseHandle: function() {
                $("body").find(".popupBg").remove();
                $("#handle").remove();
            },
            //popup 弹出方式
            popup: function(id, content, container) {
                if ($("body").find("#" + id).length > 0) {
                    $("body").find("#" + id).remove();
                }
                var html = '<div class="popup" id="' + id + '">' + content + "</div>";
                if (container) {
                    $(container).append(html);
                } else {
                    $(".pageShow").append(html);
                }
                app.show_popup("#" + id);
            },
            //
            show_popup: function(popupId) {
                if ($("body").find(".popupBg").length > 0) {
                    $("body").find(".popupBg").remove();
                }
                $('<div class="popupBg"></div>').insertBefore(popupId);
                $(popupId).addClass("popup-modal-in");
                $(".popupBg").bind("click", function() {
                    app.hide_popup();
                });
                $(popupId).find(".colse").bind("click", function() {
                    app.hide_popup();
                });
            },
            hide_popup: function() {
                $(".popup").removeClass("popup-modal-in");
                $("body").find(".popupBg").remove();
            },
            //图片加载延迟
            picLazyLoad: function(imgs, fn) {
                require.async("plug/picLazyLoad", function(picLazyLoad) {
                    picLazyLoad.watch(imgs, fn);
                });
            },
            //copy  //  data-clipboard-text="Just because you can doesn't mean you should — clipboard.js"
            copy: function(id, callblack) {
                require.async("/plug/clipboard.min", function(clipboard) {
                    var clipboard = new ClipboardJS(id);
                    clipboard.on("success", function(e) {
                        e.clearSelection();
                        callblack ? callblack("success") : "";
                    });
                    clipboard.on("error", function(e) {
                        callblack ? callblack("error") : "";
                    });
                });
            },
            //首字母大写
            ucfirst: function(str) {
                if (typeof str !== "string") {
                    return "";
                }
                var strs = str.split("/");
                var res = "";
                for (var i in strs) {
                    str = strs[i];
                    //var str = str.toLowerCase();
                    str = str.replace(/\b\w+\b/g, function(word) {
                        return word.substring(0, 1).toUpperCase() + word.substring(1);
                    });
                    res += str;
                }
                return res;
            },
            setTitle: function(title) {
                $("#app-title").text(title);
                $("title").html(title);
            },
            showLoad: function() {
                //$("body").append("<div class='dialog loading'></div>");
                var html = '<div class="loader loader--style1" title="0">';
                html += '<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"';
                html += ' width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">';
                html += '<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946';
                html += "  s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634";
                html += ' c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"/>';
                html += '<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0';
                html += '   C22.32,8.481,24.301,9.057,26.013,10.047z">';
                html += ' <animateTransform attributeType="xml"';
                html += '  attributeName="transform"';
                html += '  type="rotate"';
                html += ' from="0 20 20"';
                html += ' to="360 20 20"';
                html += ' dur="0.5s"';
                html += ' repeatCount="indefinite"/>';
                html += " </path>";
                html += "</svg>";
                html += "</div>";
                if ($("body").find(".loader--style1").length === 0) {
                    $("body").append(html);
                }
                $(".loader--style1").show();
            },
            hideLoad: function() {
                //$(".loading").remove();
                $(".loader--style1").hide();
            },
            //检查TOKEN 是否过期
            checkToken: function(callblack) {
                app.get("apiv2/user/checkToken", function(res) {
                    if (res.code != 200) {
                        app.delUserInfo();
                        app.auth();
                    } else {
                        callblack ? callblack() : "";
                    }
                });
            },
            login: function(callblack, fields) {
                var backUrl = window.location.href;
                var box_login_code = "";
                var Request = app.GetRequest(backUrl);
                var UserInfo = app.getUserInfo();
                // console.log("UserInfo:",UserInfo);
                if (UserInfo && UserInfo.user_id) {
                    app.checkToken(function() {
                        typeof callblack == "function" ? callblack(UserInfo) : "";
                    });
                } else if (Request && Request.token) {
                    var userInfoUrl = app.params.loginUrl + "index/getUserInfoByToken/?token=" + Request.token;
                    app.showLoad();
                    $.ajax({
                        url: userInfoUrl,
                        //可以不是本地域名 
                        type: "get",
                        data: {
                            fields: fields ? fields : "user_id,store_id,phone,nickname,phone,avatarUrl"
                        },
                        dataType: "jsonp",
                        //jsonp格式访问
                        success: function(data) {
                            if (data.code > 0) {
                                app.alert(data.msg);
                                app.relogin();
                            } else {
                                app.setUserInfo(data.userInfo);
                                app.hideLoad();
                                typeof callblack == "function" ? callblack(data.userInfo) : "";
                                if (app.params.bindPhone && !data.userInfo.phone) {
                                    app.bindPhone();
                                }
                            }
                        },
                        error: function() {
                            app.relogin();
                        }
                    });
                } else {
                    // var appId = app.getAppId();
                    // https://login.bestsmartbee.com/index/synclogin?inviteId=0&backUrl=http%3A%2F%2Ftenement.com%2Fadmin%2Fhome%2Findex
                    // console.log(loginUrl);
                    app.auth();
                }
            },
            relogin: function(text) {
                app.confirm({
                    text: text ? text : "授权登录发现异常，是否重新登录？",
                    yes: function() {
                        app.auth();
                    }
                });
            },
            auth: function() {
                var backUrl = window.location.href;
                var search = app.GetRequest(window.location.search);
                var store_id = search.store_id ? search.store_id : 0;
                var loginUrl;
                if (app.isWeiXin()) {
                    loginUrl = app.params.loginUrl + "index/getopenid/?store_id=" + store_id + "&backUrl=" + window.escape(backUrl);
                } else if (app.isAlipay()) {
                    loginUrl = app.params.loginUrl + "index/loginH5ByAlipay/?act=getUserId&store_id=" + store_id + "&backUrl=" + window.escape(backUrl);
                } else {
                    loginUrl = app.params.loginUrl + "index/synclogin/?store_id=" + store_id + "&backUrl=" + window.escape(backUrl);
                }
                // alert(loginUrl);
                window.location.href = loginUrl;
            },
            getStoreId: function() {
                var search = app.GetRequest(window.location.search);
                var store_id = search.store_id ? search.store_id : 0;
                return store_id;
            },
            getStore: function(callback) {
                var store_id = app.getStoreId();
                app.get("api/user/getStore", {
                    store_id: store_id
                }, function(res) {
                    callback ? callback(res.data) : "";
                });
            },
            getAppId: function() {
                var Request = app.GetRequest(window.location.href);
                if (Request.appId) {
                    return Request.appId;
                } else {
                    return "";
                }
            },
            wxJs: function(callblack) {
                if (app.wxLoad) {
                    typeof callblack == "function" ? callblack(app.wx) : "";
                    return;
                }
                app.get("api/wechat_tool/wxJs", function(signPackage) {
                    app.wx(function(wx) {
                        app.wxLoad = 1;
                        wx.config({
                            debug: false,
                            appId: signPackage.appId,
                            timestamp: signPackage.timestamp,
                            nonceStr: signPackage.nonceStr,
                            signature: signPackage.signature,
                            jsApiList: [ "onMenuShareTimeline", "onMenuShareAppMessage", "addCard", "chooseCard", "openCard", "chooseWXPay", "previewImage", "openLocation", "getLocation", "openAddress" ]
                        });
                        wx.ready(function() {
                            //alert(callblack);
                            typeof callblack == "function" ? callblack(wx) : "";
                        });
                        wx.error(function(res) {
                            //alert(callblack);
                            app.wxLoad = 0;
                            app.saveLog(res);
                            app.alert(res.errMsg);
                        });
                    });
                });
            },
            GetRequest: function(url) {
                var theRequest = new Object();
                if (url.indexOf("?") != -1) {
                    var str = url.split("?");
                    str = str[1];
                    var strs = str.split("&");
                    for (var i = 0; i < strs.length; i++) {
                        var v = strs[i].split("=")[1];
                        theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
                    }
                }
                return theRequest;
            },
            alert: function(msg, callblack) {
                //alert("<div class='dialog'>"+msg+"</div>");
                if (typeof msg != "string") {
                    msg = JSON.stringify(msg);
                }
                $("body").append("<div class='dialog'>" + msg + "</div>");
                var width = $(".dialog").width() / 2;
                var h = $(".dialog").height() / 2;
                $(".dialog").css({
                    "margin-left": "-" + width + "px",
                    "margin-top": "-" + h + "px"
                });
                setTimeout(function() {
                    $(".dialog").remove();
                    typeof callblack == "function" ? callblack() : "";
                }, 1e3);
            },
            //版本号
            getVersions: function() {
                return app.params.versions;
            },
            //用户信息
            getUserInfo: function(type) {
                var store_id = app.getStoreId();
                var userVersions = app.params.userVersions + store_id;
                var UserInfo = app.cache(userVersions).get("UserInfo");
                if (UserInfo && UserInfo.token) {
                    //callblack ? callblack(UserInfo) : "";
                    // UserInfo.user_id = 36;
                    // UserInfo.token='cca001ac8014eb17284d9545335abe12';
                    return UserInfo;
                }
                return {};
            },
            setUserInfo: function(userInfo) {
                // var userVersions = app.params.userVersions;
                var store_id = app.getStoreId();
                var userVersions = app.params.userVersions + store_id;
                if (userInfo && userInfo.user_id && userInfo.token) {
                    var search = app.GetRequest(window.location.search);
                    delete search.token;
                    $.extend(userInfo, search);
                    var UserInfo = app.cache(userVersions).set("UserInfo", userInfo);
                }
            },
            delUserInfo: function(userInfo) {
                // var userVersions = app.params.userVersions;
                var store_id = app.getStoreId();
                var userVersions = app.params.userVersions + store_id;
                app.cache(userVersions).rm("UserInfo");
            },
            get: function(url, params, callblack) {
                app.showLoad();
                // console.log(params);
                var args = typeof params == "object" ? params : {};
                callblack = $.isFunction(params) ? params : callblack;
                var UserInfo = app.getUserInfo();
                if (UserInfo && UserInfo.token) {
                    args.token = UserInfo.token;
                }
                app.ajax({
                    type: "GET",
                    dataType: "json",
                    data: args,
                    success: function(res) {
                        // console.log(res);
                        callblack(res);
                    },
                    url: app.params.apiDomain + url
                });
            },
            post: function(url, params, callblack) {
                app.showLoad();
                // console.log(params);
                var args = typeof params == "object" ? params : {};
                callblack = $.isFunction(params) ? params : callblack;
                app.ajax({
                    type: "POST",
                    dataType: "json",
                    data: args,
                    success: function(res) {
                        callblack(res);
                    },
                    url: app.params.apiDomain + url
                });
            },
            loadCss: function(url) {
                url = app.params.plugUrl + url;
                var css_id = app.base64_encode(url);
                if (!app.params.urlCache[css_id]) {
                    app.params.urlCache[css_id] = css_id;
                    $("head").append('<link href="' + url + '" id="css_id_' + css_id + '" rel="stylesheet" type="text/css" />');
                }
            },
            //无限加载
            pager: function(id, callblack) {
                //$(window).unbind('scroll');
                function pagerContent() {
                    var bot = 100;
                    //bot是底部距离的高度
                    var nDivHight = $(this).height();
                    var nScrollHight = $(this)[0].scrollHeight;
                    var nScrollTop = $(this)[0].scrollTop;
                    if (nScrollTop + nDivHight + bot >= nScrollHight && app.params.loadPage == "0") {
                        $.isFunction(callblack) ? callblack() : "";
                    }
                }
                // console.log(id);
                $(id).find(".page-content").unbind("scroll", pagerContent);
                $(id).find(".page-content").scroll(pagerContent);
            },
            picker: function(id, params) {
                app.loadCss("plug/weui2/css/picker.css");
                // console.log(app.params.plugUrl +"plug/weui2/js/zepto.weui.min.js");
                app.getScript("plug/weui2/js/zepto.weui.min.js", function() {
                    $(id).picker(params);
                });
            },
            datetimePickerWap: function(id, params) {
                app.getScript("plug/weui2/js/zepto.weui.min.js", function() {
                    $(id).datetimePicker(params);
                });
            },
            cityPicker: function(id, params) {
                app.loadCss("plug/weui2/css/picker.css");
                app.getScript("plug/weui2/js/zepto.weui.min.js", function() {
                    app.getScript("plug/weui2/js/picker.city.js", function() {
                        $(id).cityPicker(params);
                    });
                });
            },
            upload: function(obj, callblack) {
                app.loadCss("plug/photo/photo.css");
                require.async(app.params.plugUrl + "plug/photo/photo.js", function(photo) {
                    photo.initUpload($(obj));
                    callblack ? callblack() : "";
                });
            },
            MultipleUpload: function(obj, callblack) {
                app.loadCss("plug/photo/photo.css");
                require.async(app.params.plugUrl + "plug/photo/photo.js", function(photo) {
                    photo.initMultipleUpload($(obj));
                    callblack ? callblack() : "";
                });
            },
            //时间插件
            datetimepicker: function(_this) {
                app.loadCss("plug/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css");
                app.loadCss("plug/bootstrap-datetimepicker/css/datetimepicker.css");
                app.getScript("plug/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js", function() {
                    app.getScript("plug/bootstrap-datetimepicker/js/bootstrap-datetimepicker.zh-CN.js", function() {
                        $(_this).datetimepicker({
                            language: "zh-CN",
                            autoclose: 1,
                            minView: $(_this).attr("data-minview") ? $(_this).attr("data-minview") : 2
                        });
                    });
                });
            },
            lCalendar: function(id) {
                app.loadCss("plug/lCalendar.css");
                app.getScript("plug/lCalendar.min.js", function() {
                    var calendar = new lCalendar();
                    // alert($("#"+id).attr("type"));
                    calendar.init({
                        trigger: "#" + id,
                        type: $("#" + id).attr("data-type") ? $("#" + id).attr("data-type") : "date"
                    });
                });
            },
            _getScript: function(url, callback) {
                var head = document.getElementsByTagName("head")[0], js = document.createElement("script");
                js.setAttribute("type", "text/javascript");
                js.setAttribute("src", url);
                head.appendChild(js);
                //执行回调
                var callbackFn = function() {
                    if (typeof callback === "function") {
                        callback();
                    }
                };
                if (document.all) {
                    //IE
                    js.onreadystatechange = function() {
                        if (js.readyState == "loaded" || js.readyState == "complete") {
                            callbackFn();
                        }
                    };
                } else {
                    js.onload = function() {
                        callbackFn();
                    };
                }
            },
            //加载js
            getScript: function(url, callblack, versions) {
                url = app.params.plugUrl + url;
                app._getScript(url, function() {
                    callblack ? callblack() : "";
                });
            },
            ajax: function(params) {
                var userInfo = app.getUserInfo();
                var userInfoSearch = {};
                var search = app.GetRequest(window.location.search);
                delete search.token;
                if (userInfo) {
                    userInfoSearch = {
                        store_id: userInfo.store_id,
                        token: userInfo.token
                    };
                    if (userInfo.appid) {
                        userInfoSearch.appid = userInfo.appid;
                    }
                    if (userInfo.appid) {
                        userInfoSearch.openid = userInfo.openid;
                    }
                }
                // console.log(userInfoSearch);
                // return;
                $.extend(userInfoSearch, search);
                params = params ? params : {};
                if ($.isArray(params["data"])) {
                    for (var i in params["data"]) {
                        // userInfoSearch.push({
                        //       name:i,
                        //       value:params["data"][i]
                        //   });
                        userInfoSearch[params["data"][i]["name"]] = params["data"][i]["value"];
                    }
                    params["data"] = userInfoSearch;
                } else {
                    $.extend(userInfoSearch, params["data"]);
                    params["data"] = userInfoSearch;
                }
                console.log(userInfoSearch);
                var ajaxTimeoutTest = $.ajax({
                    url: params["url"],
                    type: params["type"],
                    dataType: params["dataType"],
                    data: params["data"],
                    cache: false,
                    timeout: 1e4,
                    beforeSend: function() {
                        app.showLoad();
                    },
                    success: function(result) {
                        var success = params["success"];
                        typeof success == "function" ? success(result) : "";
                    },
                    complete: function(msg, status) {
                        // console.log(msg.response);
                        app.hideLoad();
                        if (status == "timeout") {
                            //超时,status还有success,error等值的情况                       　　　　　
                            ajaxTimeoutTest.abort();
                            app.alert("由于网络原因，请求超时，请刷新网页试试");
                            app.saveLog("由于网络原因，请求超时，请刷新网页试试");
                        }
                        if (params["cache"]) {
                            var key = app.base64_encode(params["url"]);
                            var result = msg.response;
                            app.params.urlCache[key] = result;
                            app.cache().set(key, result);
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        app.saveLog(errorThrown);
                        console.log(errorThrown);
                    }
                });
            },
            //保存错误日志
            saveLog: function(msg) {
                console.log(msg);
            },
            //轮播图
            swiper: function(id) {
                app.loadCss("plug/Swiper-4.4.2/css/swiper.min.css");
                app.getScript("plug/Swiper-4.4.2/js/swiper.min.js", function() {
                    var swiper = new window.Swiper("#" + id, {
                        pagination: "#" + id + " .swiper-pagination",
                        //nextButton: '#swiper_<{$data.name}> .swiper-button-next',
                        //prevButton: '#swiper_<{$data.name}> .swiper-button-prev',
                        loop: true,
                        spaceBetween: 30,
                        centeredSlides: true,
                        autoplay: 5e3
                    });
                }, false);
            },
            //页面切换
            swiperPage: function(id, callblack) {
                //  app.loadCss("plug/Swiper-3.3.1/swiper.css");
                app.getScript("plug/Swiper-3.3.1/swiper-3.4.1.jquery.min.js", function() {
                    //绑定滚动事件,记住滚动位置
                    // var swiperH=$(id).attr("swiperH");
                    // var swiperT=$(id).attr("swiperT");
                    var pageContent = $(id).parents(".page-content");
                    var swiperWrap = $(id + "-container");
                    $(swiperWrap).find(".swiperTap").find(".active").addClass("scrollActive");
                    $(pageContent).scroll(function(event) {
                        var swiperIndex = $(swiperWrap).find(".swiperTap").find(".scrollActive");
                        var scrollTop = $(this).scrollTop();
                        var scroll = $(swiperIndex).attr("scroll");
                        if (scroll != "0") {
                            $(swiperIndex).attr("scrollTop", scrollTop);
                        }
                    });
                    var swiper = new window.Swiper(id, {
                        pareanContainer: id + "-container",
                        //autoHeight:true,
                        onTransitionStart: function(swiper) {
                            var pageContent = $(id).parents(".page-content");
                            $(pageContent).addClass("overflowhidden");
                            $(swiperWrap).find(".swiperTap li").attr("scroll", "0");
                        },
                        onTransitionEnd: function(swiper) {
                            var activeIndex = swiper.activeIndex;
                            var swiperWrap = $(id + "-container");
                            $(swiperWrap).find(".swiperTap li").removeClass("scrollActive");
                            $(swiperWrap).find(".swiperTap").find("li").eq(activeIndex).addClass("scrollActive");
                            $(swiperWrap).find(".swiperTap li").attr("scroll", "1");
                            $(pageContent).removeClass("overflowhidden");
                        },
                        onSlideChangeEnd: function(swiper) {
                            var activeIndex = swiper.activeIndex;
                            var swiperWrap = $(id + "-container");
                            var scrollTop = $(swiperWrap).find(".swiperTap li").eq(activeIndex).attr("scrollTop");
                            $(id).parents(".page-content").scrollTop(scrollTop);
                            $(pageContent).removeClass("overflowhidden");
                        },
                        onSlideChangeStart: function(swiper) {
                            var activeIndex = swiper.activeIndex;
                            var slideActive = $(id).find(".swiper-slide").eq(activeIndex);
                            $(id).find(".swiper-slide").addClass("swiper-slide-hide");
                            slideActive.removeClass("swiper-slide-hide");
                            var load = slideActive.attr("load");
                            var name = slideActive.attr("name");
                            if (load != 1 && name) {
                                app.routePage(name, slideActive, 1);
                                slideActive.attr("load", 1);
                            }
                            var swiperWrap = $(id + "-container");
                            $(swiperWrap).find(".swiperTap li").removeClass("active");
                            $(swiperWrap).find(".swiperTap li").eq(activeIndex).addClass("active");
                            //alert(callblack);
                            //滚动到原来位置
                            // alert($(slideActive).height());
                            //$(id).height(($(slideActive).height()));
                            callblack ? callblack(swiper) : "";
                        },
                        onTouchMove: function(swiper, e) {
                            var activeIndex = swiper.activeIndex;
                            var container = $(id + "-container");
                            var transform = $(container).find(".swiper-wrapper").css("transform");
                            var w = swiper.width;
                            var li_w = $(container).find(".swiperTap li").eq(activeIndex).width();
                            if (typeof transform == "string" && transform && transform.indexOf("translate3d(") == "0") {
                                if (transform.indexOf("translate3d(") == "0") {
                                    var transforms = transform.substring(13).split(",");
                                    var transformsW = Number(transforms[0].replace(/px/g, ""));
                                    var transform_x = (transformsW - activeIndex * w) / w * li_w;
                                }
                            } else {
                                return false;
                            }
                            $(container).parents(".page").find(".nav-tab-fix li").eq(activeIndex).find(".swiperTapLine").css("left", transform_x + "px");
                            if ($(container).parents(".page").find(".nav-tab-fix li").length) {
                                $(container).find(".swiperTap li").eq(activeIndex).find(".swiperTapLine").css("left", transform_x + "px");
                            }
                        },
                        onTouchEnd: function(swiper, e) {
                            var container = $(id + "-container");
                            var activeIndex = swiper.activeIndex;
                            $(container).find(".swiperTap li").find(".swiperTapLine").css("left", "0px");
                            if ($(container).parents(".page").find(".nav-tab-fix li").length) {
                                $(container).parents(".page").find(".nav-tab-fix li").find(".swiperTapLine").css("left", "0px");
                            }
                        }
                    });
                    //绑定点击事件
                    var length = $(id).find(".swiper-slide").length;
                    $(id + "-container").find(".swiperTap li").click(function(event) {
                        var index = $(this).index();
                        if (length > index) {
                            swiper.slideTo(index);
                        }
                    });
                    if ($(id + "-container").parents(".page").find(".nav-tab-fix li").length) {
                        $(id + "-container").parents(".page").find(".nav-tab-fix li").click(function(event) {
                            var index = $(this).index();
                            if (length > index) {
                                swiper.slideTo(index);
                            }
                        });
                    }
                }, false);
            },
            /*
             * Javascript base64_encode() base64加密函数
             用于生成字符串对应的base64加密字符串
             * 吴先成  www.51-n.com ohcc@163.com QQ:229256237
             * @param string str 原始字符串
             * @return string 加密后的base64字符串
             */
            base64_encode: function(str) {
                var c1, c2, c3;
                var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                var i = 0, len = str.length, string = "";
                while (i < len) {
                    c1 = str.charCodeAt(i++) & 255;
                    if (i == len) {
                        string += base64EncodeChars.charAt(c1 >> 2);
                        string += base64EncodeChars.charAt((c1 & 3) << 4);
                        string += "==";
                        break;
                    }
                    c2 = str.charCodeAt(i++);
                    if (i == len) {
                        string += base64EncodeChars.charAt(c1 >> 2);
                        string += base64EncodeChars.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
                        string += base64EncodeChars.charAt((c2 & 15) << 2);
                        string += "=";
                        break;
                    }
                    c3 = str.charCodeAt(i++);
                    string += base64EncodeChars.charAt(c1 >> 2);
                    string += base64EncodeChars.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
                    string += base64EncodeChars.charAt((c2 & 15) << 2 | (c3 & 192) >> 6);
                    string += base64EncodeChars.charAt(c3 & 63);
                }
                return string;
            },
            /*
             * Javascript base64_decode() base64解密函数
             用于解密base64加密的字符串
             * 吴先成  www.51-n.com ohcc@163.com QQ:229256237
             * @param string str base64加密字符串
             * @return string 解密后的字符串
             */
            base64_decode: function(str) {
                var c1, c2, c3, c4;
                var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
                var i = 0, len = str.length, string = "";
                while (i < len) {
                    do {
                        c1 = base64DecodeChars[str.charCodeAt(i++) & 255];
                    } while (i < len && c1 == -1);
                    if (c1 == -1) break;
                    do {
                        c2 = base64DecodeChars[str.charCodeAt(i++) & 255];
                    } while (i < len && c2 == -1);
                    if (c2 == -1) break;
                    string += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4);
                    do {
                        c3 = str.charCodeAt(i++) & 255;
                        if (c3 == 61) return string;
                        c3 = base64DecodeChars[c3];
                    } while (i < len && c3 == -1);
                    if (c3 == -1) break;
                    string += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2);
                    do {
                        c4 = str.charCodeAt(i++) & 255;
                        if (c4 == 61) return string;
                        c4 = base64DecodeChars[c4];
                    } while (i < len && c4 == -1);
                    if (c4 == -1) break;
                    string += String.fromCharCode((c3 & 3) << 6 | c4);
                }
                return string;
            },
            //缓存
            cache: function(v) {
                var versions = v ? v : app.getVersions();
                var cacheFun = {
                    set: function(key, data) {
                        var value;
                        key = key + "_" + versions;
                        if (typeof data == "object") {
                            data = JSON.stringify(data);
                            value = "obj-" + data;
                        } else {
                            value = "str-" + data;
                        }
                        try {
                            localStorage.setItem(key, value);
                        } catch (err) {
                            if (err.name == "QuotaExceededError") {
                                localStorage.clear();
                                //如果缓存已满则清空
                                localStorage.setItem(key, value);
                            }
                        }
                    },
                    rm: function(key) {
                        key = key + "_" + versions;
                        localStorage.removeItem(key);
                    },
                    get: function(key) {
                        key = key + "_" + versions;
                        var value = localStorage.getItem(key);
                        if (value == null) {
                            return null;
                        }
                        var type = value.substr(0, 4);
                        if (type == "str-") {
                            return value.substr(4);
                        }
                        if (type == "obj-") {
                            var data = value.substr(4);
                            return $.parseJSON(data);
                        }
                    },
                    clear: function() {
                        localStorage.clear();
                    }
                };
                return cacheFun;
            },
            //微信默认分享
            wxDefShare: function(params) {
                if (typeof params == "undefined") {
                    var wxShareData = {
                        title: "跟着普象君有肉吃",
                        // 分享标题
                        imgUrl: "https://www.lgstatic.com/thumbnail_300x300/image1/M00/00/47/Cgo8PFTUXOOAbTbtAAA-0t30W6k220.jpg",
                        // 分享图标
                        desc: "等你好久了，终于来了"
                    };
                } else {
                    wxShareData = params;
                }
                app.wxShare(wxShareData);
            },
            // get vue vm
            getVm: function(name) {
                if (typeof name == "string") {
                    name = "js/" + name;
                    return seajs.Module.get(require.resolve(name)) && seajs.Module.get(require.resolve(name)).exports && seajs.Module.get(require.resolve(name)).exports.vm;
                } else {
                    return null;
                }
            },
            setPageData: function(pageName, data) {
                var curData = this.pageData[pageName] ? this.pageData[pageName] : {};
                // console.log("setPageData",data);
                for (var i in data) {
                    //console.log("i", i, data[i]);
                    curData[i] = data[i];
                }
                this.pageData[pageName] = curData;
            },
            getPageData: function(pageName, key) {
                var curData = this.pageData[pageName];
                if (key) {
                    return curData ? curData[key] : null;
                } else {
                    return curData;
                }
            },
            area: function(_this) {
                app.getScript("plug/area.js", function() {
                    $(_this).attr("domain", app.params.apiDomain);
                    $(_this).area();
                });
            },
            areaForbank: function(_this) {
                app.getScript("plug/areaForbank.js", function() {
                    $(_this).attr("domain", app.params.apiDomain);
                    $(_this).area();
                });
            },
            // 绑手机
            bindPhone: function() {
                // var params = app.GetRequest(window.location.search);
                var url = window.location.href;
                app.component("bindphone", {
                    title: "绑定手机号",
                    success: function(res) {
                        window.location.href = url;
                    }
                });
            },
            pay: function(order_sn, type) {
                var payurl = app.params.apiDomain + "apiv2/pay/run/?order_sn=" + order_sn;
                if (type) {
                    payurl += "&paytype=" + type;
                }
                var url = window.location.href;
                var Request = app.GetRequest(url);
                // 微信小程序
                if (Request.from_wx_app == "miniprogram") {
                    app.wxJs(function(wx) {
                        wx.miniProgram.navigateTo({
                            url: "/pages/pay/index?order_sn=" + order_sn
                        });
                    });
                    return;
                }
                // 去支付 
                if (url.indexOf("/app/?") > 0) {
                    app.showLoad();
                    if ($("#payBoxHide").length == 0) {
                        $("body").append('<div style="display:none" id="payBoxHide"></div>');
                    }
                    $("#payBoxHide").load(payUrl, function() {
                        app.hideLoad();
                    });
                } else {
                    window.location.href = payurl;
                }
            }
        };
        $.extend(true, app, fun);
        return app;
    };
    module.exports = app;
});

'use strict';

define(function (require, exports, module) {
  var router = require("router");
  //var app = require("app");
  var controller = {};
  controller.vue = function () {
    controller.vm = new Vue({
      router: router,
      data: function data() {
        return {

          data: {
            list: [],
            shop_info: {},
            type: 0
          },
          loading: 0,
          frisload: 1,
          table_id: 0,
          tableInfo: {},
          use_yie: 0,
          disabled: 0,
          shop_id: 0,
          card_code: '',
          order_amount: 0,
          user_info: {},
          card_title: ''
        };
      },
      el: '#pageCheckout',
      created: function created() {
        this.fetchData();
      },
      mounted: function mounted() {

        if (this.mounted == 1) {
          return;
        }
        // this.bindPick();
        var that = this;
        this.mounted = 1;
      },

      methods: {
        fetchData: function fetchData() {
          var _this = this;
          this.table_id = this.$route.params.table_id;
          this.getInfo();
          this.getTableInfo();
        },
        //桌位信息
        getTableInfo: function getTableInfo() {
          var that = this;
          app.get("mall/mall_tables/find", {
            id: this.table_id
          }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
            }
            that.shop_id = res.data.shop_id;
            that.setData({ tableInfo: res.data });
            // that.getShopInfo();
          });
        },
        // 用户信息
        getInfo: function getInfo() {
          var that = this;
          app.get("api/user/info", {
            fields: "avatarUrl,user_id,last_update_time,nickname"
          }, function (res) {

            if (res.code != 200) {
              app.alert(res.msg);
              return;
            }

            that.setData({ user_info: res.data });
          });
        },

        //打开商家所在地点
        openlocation: function openlocation() {
          var that = this;
          app.wx(function (wx) {
            wx.openLocation({
              latitude: Number(that.data.data.shop_info.latitude),
              longitude: Number(that.data.data.shop_info.longitude),
              scale: 28,
              address: that.data.data.shop_info.fulladdress,
              name: that.data.data.shop_info.name
            });
          });
        },
        setData: function setData(arr) {
          for (var i in arr) {

            this[i] = arr[i];
          }
        },
        //加载购物车
        loadCart: function loadCart(reload) {
          var that = this;
          if (reload == 1) {
            this.setData({
              loading: 0,
              listData: []
            });
          }
          this.loading = 1;
          app.get("mall/cart/getcartByUserId", {
            table_id: this.table_id,
            card_code: this.card_code
          }, function (res) {
            that.loading = 0;
            if (res.code != 200) {
              app.alert(res.msg);
              return;
            }
            that.frisload = 0;
            // 卡券不可用
            if (res.data.cardRes && res.data.cardRes.code > 0) {
              app.alert(res.data.cardRes.msg);
              that.card_code = "";
              that.card_title = "";
            }
            that.data = res.data;
            that.shop_info = res.data.shop_info;
          });
        },
        /**
        * 生命周期函数--监听页面显示
        */
        pageShow: function pageShow() {

          this.loadCart();
        },
        suc: function suc() {},
        //生成订单
        formSubmit: function formSubmit(e) {
          var that = this;
          that.setData({ loading: 1, disabled: 1 });
          that.payloading = 1;
          var remark = $("#pageCheckout").find("[name='remark']").val();
          app.post("api/pay/bookOffline", {
            remark: remark ? remark : '',
            shop_id: this.shop_id,
            // paytype:'offline_payment',
            card_code: this.card_code,
            table_id: this.table_id
          }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
              that.payloading = 0;
              that.setData({ 'loading': 0 });
              that.setData({ 'disabled': 0 });
              return false;
            }
            var order_sn = res.data.order_sn;
            if (res.data.paytype != "auto") {
              app.pay(order_sn, res.data.paytype);
            } else {
              app.pay(order_sn);
            }
          });
        },
        moreAct: function moreAct(e) {
          var that = this;
          var itemListArray = [];
          var goods_id = e.currentTarget.dataset.goods_id;
          var goods_spec_id = e.currentTarget.dataset.goods_spec_id;
        },
        //选择卡券
        chooseCard: function chooseCard() {
          var that = this;
          app.component("card", {
            success: function success(res) {
              that.$router.go(-1);
              that.card_code = res.card_code;
              that.card_title = res.card_title;
              that.loadCart(1);
            }
          });
        }

      }

    }).$mount('#app');
  };
  module.exports = controller;
});

'use strict';

define(function (require, exports, module) {
  var router = require("router");
  //var app = require("app");
  var controller = {};
  var goodslist = {};
  var goods_spec = {};
  controller.vue = function () {
    controller.vm = new Vue({
      router: router,
      data: function data() {
        return {
          shop_info: {},
          shoppingCartList: [],
          goods: {},
          tabid: -1,
          popup: 0,
          popup2: 0,
          data: {},
          tableInfo: {},
          choose_property_data: {},
          choose_spec: {},
          disabled: 0,
          spec_keys_str: '',
          goods_in_cart: {},
          tag_list: [],
          table_id: 0
        };
      },
      el: '#pageIndex',
      created: function created() {
        this.fetchData();
      },
      watch: {
        shoppingCartList: function shoppingCartList(val) {
          // 购物车数量
          var goods_in_cart = {};
          var list = val.list;
          for (var i in list) {
            list[i].idx = i;
            goods_in_cart[list[i].goods_id] = list[i];
          }
          this.goods_in_cart = {};
          this.goods_in_cart = goods_in_cart;
        }
      },
      methods: {
        fetchData: function fetchData() {
          var _this = this;
          this.table_id = this.$route.params.table_id;
          var user_info = app.getUserInfo();
          if (this.$route.params.shop_id) {
            this.shop_id = this.$route.params.shop_id;
            this.getTagList();
          } else {
            this.getTableInfo();
          }

          this.getcartByUserId();
        },
        setData: function setData(arr) {
          for (var i in arr) {
            this[i] = arr[i];
          }
        },

        btn_cancel: function btn_cancel() {
          this.setData({ popup: 0 });
        },
        show_popup: function show_popup() {
          if (this.shoppingCartList.count) {
            this.setData({ popup: 1 });
          }
        },
        //桌位信息
        getTableInfo: function getTableInfo() {
          var that = this;
          app.get("mall/mall_tables/find", {
            id: this.table_id
          }, function (res) {
            // 扫空码需要绑定商家信息
            if (res.code == 2) {
              window.location.href = app.params.apiDomain + "/apiv2/scene/bindTable?id=" + that.table_id;
              return;
            }

            if (res.code != 200) {
              app.alert(res.msg);
            }
            that.shop_id = res.data.shop_id;
            that.setData({ tableInfo: res.data });

            that.getTagList();
          });
        },
        // 标签列表
        getTagList: function getTagList() {
          var that = this;
          app.get("mall/tag/get", { shop_id: this.shop_id, type: '2,12' }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
            } else if (res.data) {
              that.tag_list = res.data.list;
              that.showTabs(0);
            }
          });
        },

        //商品列表
        loadList: function loadList(reload) {
          var that = this;
          var attr_id = this.attr_id;
          if (that.goods[attr_id] && that.goods[attr_id].length > 0) {
            return;
          }
          app.get("mall/goods/get", {
            attr_id: this.attr_id,
            status: 1
          }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
            }

            if (res.data && res.data.list) {
              goodslist[attr_id] = res.data.list;
            } else {
              goodslist[attr_id] = [];
            }
            var that_goods = that.goods;
            var goods = [];
            for (var k in goodslist[attr_id]) {
              var item = goodslist[attr_id][k];
              goods.push({
                default_img: item['default_img'],
                goods_name: item['goods_name'],
                origin_price: item['origin_price'],
                price: item['price'],
                total_stock: item['total_stock'],
                sub_title: item['sub_title'],
                id: item['id']
              });
            }
            that.goods = {};
            that_goods[attr_id] = goods;
            that.goods = that_goods;
            // console.log(that.goods);
          });
        },
        showTabs: function showTabs(index) {

          if (this.tabid == index) {
            return;
          }

          var tag = this.tag_list[index];
          // console.log(tag);
          this.attr_id = tag.id;
          this.setData({ tabid: index });
          this.loadList();
        },
        // 购物车
        getcartByUserId: function getcartByUserId() {
          var that = this;
          app.get("mall/cart/getcartByUserId", {
            table_id: this.table_id
          }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
            } else if (res.data) {
              that.setData({ shoppingCartList: res.data });
              that.shop_info = res.data.shop_info;
            }
          });
        },
        //商品数量减
        minus: function minus(e) {
          var target = $(e.target);
          var id = target.attr("data-id");
          var shoppingCartList = this.shoppingCartList;
          if (shoppingCartList.list[id].count < 1) {
            shoppingCartList.list[id].count = 0;
          } else {
            shoppingCartList.list[id].count--;
          }
          this.setData({ shoppingCartList: shoppingCartList });
          this.addToCart({
            count: shoppingCartList.list[id].count,
            goods_spec_id: target.attr("data-goods_spec_id"), //  $(input).attr("goods_spec_id"),
            goods_id: target.attr("data-goods_id")
          });
        },
        //商品数量加
        plus: function plus(e) {
          var target = $(e.target);
          var id = target.attr("data-id");

          var shoppingCartList = this.shoppingCartList;
          shoppingCartList.list[id].count++;
          this.setData({ shoppingCartList: shoppingCartList });
          this.addToCart({
            count: shoppingCartList.list[id].count,
            goods_spec_id: target.attr("data-goods_spec_id"), //  $(input).attr("goods_spec_id"),
            goods_id: target.attr("data-goods_id")
          });
        },
        //商品数量
        changeCount: function changeCount(e) {

          var target = $(e.target);
          var id = target.attr("data-id");
          var count = target.val();
          var shoppingCartList = this.shoppingCartList;
          shoppingCartList.list[id].count = count;
          this.setData({ shoppingCartList: shoppingCartList });
          this.addToCart({
            count: count,
            goods_spec_id: target.attr("data-goods_spec_id"), //  $(input).attr("goods_spec_id"),
            goods_id: target.attr("data-goods_id")
          });
        },
        //加入购物车
        addToCart: function addToCart(post, callback) {

          var that = this;
          post.table_id = this.table_id;
          app.get("/mall/cart/add", post, function (res) {

            if (res.code != 200) {
              app.alert(res.msg);
            } else {
              callback ? callback(res) : '';
              that.setData({ shoppingCartList: res.data });
              if (res.data.count === 0) {
                that.btn_cancel();
              }
            }
          });
        },
        //清空购物车
        clearCart: function clearCart() {

          var that = this;
          app.get("mall/cart/clearCart", { shop_id: this.shop_id }, function (res) {
            if (res.code != 200) {
              app.alert(res.msg);
            } else {
              app.alert("恭喜,成功清空购物车!");

              that.setData({ shoppingCartList: { nextText: '去结算' } });
              that.btn_cancel();
            }
          });
        },
        //去结算
        settle_accounts: function settle_accounts() {
          // var store_id = app.getStoreId();
          this.$router.push({
            name: 'checkout',
            params: {
              table_id: this.table_id
            }
          });
          // this.$router.push({name:'checkout',params:{shop_id:this.shop_id}});
          // window.location.href = "/apps/shop/?store_id="+store_id+"#/checkout/"+this.shop_id;
        },
        //选规格

        buyNow: function buyNow(item_id, tab_id) {
          // console.log(e);
          var postData = {};
          // var item_id = $(e.target).attr("data-item_id");
          // var tab_id = $(e.target).attr("data-tab_id");
          // console.log()
          var data;
          if (tab_id > -1 && item_id > -1) {
            // console.log(goodslist);
            data = goodslist[tab_id][item_id];
            goods_spec = data.goods_spec;
            data.goods_spec = {};
          } else if (this.data.id) {
            data = this.data;
          } else {
            app.alert("请选择商品");
            return;
          }

          if (data.property_arr.length > 0 && this.choose_spec.spec_stock > 0) {
            postData.goods_id = this.choose_spec.goods_id;
            postData.goods_spec_id = this.choose_spec.id;
            //可以去结算
          } else if (data.property_arr.length === 0) {
            postData.goods_id = data.id;
          } else if (this.popup2 == 1) {

            app.alert('请选择商品规格');
            return;
          } else {
            this.setData({ data: data });
            this.chooseSpec();
            return;
          }
          //加入购车
          this.addToCart(postData, function () {
            // app.alert('成功加入购物车!');

          });
          this.hide_choose_goods();
        },
        hide_choose_goods: function hide_choose_goods() {
          goods_spec = {};
          this.setData({ popup2: 0, data: {}, choose_spec: {}, choose_property_data: {} });
        },
        //弹出选规格
        chooseSpec: function chooseSpec() {
          this.setData({ popup2: 1 });
        },
        //选规格
        chooseProperty: function chooseProperty(e) {
          //console.log(e); 
          var property = e.currentTarget.dataset.property;
          var subProperty = e.currentTarget.dataset.subProperty;
          var choose_property_data = this.choose_property_data;
          choose_property_data[property] = subProperty;
          this.setData({ choose_property_data: choose_property_data });
          var arr = [];
          for (var i in choose_property_data) {
            arr.push(choose_property_data[i]);
          }

          if (arr.length == this.data.property_arr.length) {
            this.setData({ spec_keys_str: arr.join(" ") });
            var l = arr.length;
            for (var j = 0; j < 5 - l; j++) {
              arr.push("");
            }
            // console.log(arr,arr);
            var spec_keys = arr.sort();
            var spec_keys_str = spec_keys.join("_");
            if (goods_spec[spec_keys_str] && goods_spec[spec_keys_str].spec_stock > 0) {
              this.setData({ choose_spec: goods_spec[spec_keys_str] });
              this.setData({ disabled: 0 });
            } else {
              app.alert('已售空');

              this.setData({ disabled: 1 });
            }
          }

          // console.log(this.choose_spec);
          //choose_spec
        }
      }

    }).$mount('#app');
  };
  module.exports = controller;
});

'use strict';

define(function (require) {
    var PuthinkApp = require('app');
    //vue 组件
    // require('js/component');
    //zach
    //配置文件
    var params = {
        apiDomain: seajs.data.apiDomain ? seajs.data.apiDomain : 'https://www.bestsmartbee.com/', //接口域名 不带"/"
        domain: '', //网站域名  不带"/",
        appname: seajs.data.appname,
        debug: seajs.data.debug ? seajs.data.debug : false,
        versions: seajs.data.versions ? seajs.data.versions : '6.8',
        userVersions: seajs.data.userVersions ? seajs.data.userVersions : '6.9'
    };

    //app 实例之后 ， 只执行一次
    PuthinkApp.afterInit = function () {
        var _hmt = _hmt || [];
    };

    //页面显示时引用，每次都会执行
    PuthinkApp.pageShow = function (params) {
        var name = params.name;
        // console.log();
    };

    //实例化app
    window.app = new PuthinkApp(params);
    app.login(function () {
        app.init();
    });
});

'use strict';

define(function (require, exports, module) {
    var Router = new VueRouter({
        routes: [{
            path: '/:table_id',
            name: 'index',
            page: 'cache'
        }, {
            path: '/shop_id/:shop_id',
            name: 'index',
            page: 'cache'
        }, {
            path: '/checkout/:table_id',
            name: 'checkout',
            title: '结算',
            page: 'cache'
        }]
    });
    module.exports = Router;
});

"use strict";

define("./js/checkout", [ "router" ], function(require, exports, module) {
    var router = require("router");
    //var app = require("app");
    var controller = {};
    controller.vue = function() {
        controller.vm = new Vue({
            router: router,
            data: function data() {
                return {
                    data: {
                        list: [],
                        shop_info: {},
                        type: 0
                    },
                    loading: 0,
                    frisload: 1,
                    table_id: 0,
                    tableInfo: {},
                    use_yie: 0,
                    disabled: 0,
                    shop_id: 0,
                    card_code: "",
                    order_amount: 0,
                    user_info: {},
                    card_title: ""
                };
            },
            el: "#pageCheckout",
            created: function created() {
                this.fetchData();
            },
            mounted: function mounted() {
                if (this.mounted == 1) {
                    return;
                }
                // this.bindPick();
                var that = this;
                this.mounted = 1;
            },
            methods: {
                fetchData: function fetchData() {
                    var _this = this;
                    this.table_id = this.$route.params.table_id;
                    this.getInfo();
                    this.getTableInfo();
                },
                //桌位信息
                getTableInfo: function getTableInfo() {
                    var that = this;
                    app.get("mall/mall_tables/find", {
                        id: this.table_id
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        }
                        that.shop_id = res.data.shop_id;
                        that.setData({
                            tableInfo: res.data
                        });
                    });
                },
                // 用户信息
                getInfo: function getInfo() {
                    var that = this;
                    app.get("api/user/info", {
                        fields: "avatarUrl,user_id,last_update_time,nickname"
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                            return;
                        }
                        that.setData({
                            user_info: res.data
                        });
                    });
                },
                //打开商家所在地点
                openlocation: function openlocation() {
                    var that = this;
                    app.wx(function(wx) {
                        wx.openLocation({
                            latitude: Number(that.data.data.shop_info.latitude),
                            longitude: Number(that.data.data.shop_info.longitude),
                            scale: 28,
                            address: that.data.data.shop_info.fulladdress,
                            name: that.data.data.shop_info.name
                        });
                    });
                },
                setData: function setData(arr) {
                    for (var i in arr) {
                        this[i] = arr[i];
                    }
                },
                //加载购物车
                loadCart: function loadCart(reload) {
                    var that = this;
                    if (reload == 1) {
                        this.setData({
                            loading: 0,
                            listData: []
                        });
                    }
                    this.loading = 1;
                    app.get("mall/cart/getcartByUserId", {
                        table_id: this.table_id,
                        card_code: this.card_code
                    }, function(res) {
                        that.loading = 0;
                        if (res.code != 200) {
                            app.alert(res.msg);
                            return;
                        }
                        that.frisload = 0;
                        // 卡券不可用
                        if (res.data.cardRes && res.data.cardRes.code > 0) {
                            app.alert(res.data.cardRes.msg);
                            that.card_code = "";
                            that.card_title = "";
                        }
                        that.data = res.data;
                        that.shop_info = res.data.shop_info;
                    });
                },
                /**
        * 生命周期函数--监听页面显示
        */
                pageShow: function pageShow() {
                    this.loadCart();
                },
                suc: function suc() {},
                //生成订单
                formSubmit: function formSubmit(e) {
                    var that = this;
                    that.setData({
                        loading: 1,
                        disabled: 1
                    });
                    that.payloading = 1;
                    var remark = $("#pageCheckout").find("[name='remark']").val();
                    app.post("api/pay/bookOffline", {
                        remark: remark ? remark : "",
                        shop_id: this.shop_id,
                        // paytype:'offline_payment',
                        card_code: this.card_code,
                        table_id: this.table_id
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                            that.payloading = 0;
                            that.setData({
                                loading: 0
                            });
                            that.setData({
                                disabled: 0
                            });
                            return false;
                        }
                        var order_sn = res.data.order_sn;
                        if (res.data.paytype != "auto") {
                            app.pay(order_sn, res.data.paytype);
                        } else {
                            app.pay(order_sn);
                        }
                    });
                },
                moreAct: function moreAct(e) {
                    var that = this;
                    var itemListArray = [];
                    var goods_id = e.currentTarget.dataset.goods_id;
                    var goods_spec_id = e.currentTarget.dataset.goods_spec_id;
                },
                //选择卡券
                chooseCard: function chooseCard() {
                    var that = this;
                    app.component("card", {
                        success: function success(res) {
                            that.$router.go(-1);
                            that.card_code = res.card_code;
                            that.card_title = res.card_title;
                            that.loadCart(1);
                        }
                    });
                }
            }
        }).$mount("#app");
    };
    module.exports = controller;
});

"use strict";

define("./js/index", [ "router" ], function(require, exports, module) {
    var router = require("router");
    //var app = require("app");
    var controller = {};
    var goodslist = {};
    var goods_spec = {};
    controller.vue = function() {
        controller.vm = new Vue({
            router: router,
            data: function data() {
                return {
                    shop_info: {},
                    shoppingCartList: [],
                    goods: {},
                    tabid: -1,
                    popup: 0,
                    popup2: 0,
                    data: {},
                    tableInfo: {},
                    choose_property_data: {},
                    choose_spec: {},
                    disabled: 0,
                    spec_keys_str: "",
                    goods_in_cart: {},
                    tag_list: [],
                    table_id: 0
                };
            },
            el: "#pageIndex",
            created: function created() {
                this.fetchData();
            },
            watch: {
                shoppingCartList: function shoppingCartList(val) {
                    // 购物车数量
                    var goods_in_cart = {};
                    var list = val.list;
                    for (var i in list) {
                        list[i].idx = i;
                        goods_in_cart[list[i].goods_id] = list[i];
                    }
                    this.goods_in_cart = {};
                    this.goods_in_cart = goods_in_cart;
                }
            },
            methods: {
                fetchData: function fetchData() {
                    var _this = this;
                    this.table_id = this.$route.params.table_id;
                    var user_info = app.getUserInfo();
                    if (this.$route.params.shop_id) {
                        this.shop_id = this.$route.params.shop_id;
                        this.getTagList();
                    } else {
                        this.getTableInfo();
                    }
                    this.getcartByUserId();
                },
                setData: function setData(arr) {
                    for (var i in arr) {
                        this[i] = arr[i];
                    }
                },
                btn_cancel: function btn_cancel() {
                    this.setData({
                        popup: 0
                    });
                },
                show_popup: function show_popup() {
                    if (this.shoppingCartList.count) {
                        this.setData({
                            popup: 1
                        });
                    }
                },
                //桌位信息
                getTableInfo: function getTableInfo() {
                    var that = this;
                    app.get("mall/mall_tables/find", {
                        id: this.table_id
                    }, function(res) {
                        // 扫空码需要绑定商家信息
                        if (res.code == 2) {
                            window.location.href = app.params.apiDomain + "/apiv2/scene/bindTable?id=" + that.table_id;
                            return;
                        }
                        if (res.code != 200) {
                            app.alert(res.msg);
                        }
                        that.shop_id = res.data.shop_id;
                        that.setData({
                            tableInfo: res.data
                        });
                        that.getTagList();
                    });
                },
                // 标签列表
                getTagList: function getTagList() {
                    var that = this;
                    app.get("mall/tag/get", {
                        shop_id: this.shop_id,
                        type: "2,12"
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        } else if (res.data) {
                            that.tag_list = res.data.list;
                            that.showTabs(0);
                        }
                    });
                },
                //商品列表
                loadList: function loadList(reload) {
                    var that = this;
                    var attr_id = this.attr_id;
                    if (that.goods[attr_id] && that.goods[attr_id].length > 0) {
                        return;
                    }
                    app.get("mall/goods/get", {
                        attr_id: this.attr_id,
                        status: 1
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        }
                        if (res.data && res.data.list) {
                            goodslist[attr_id] = res.data.list;
                        } else {
                            goodslist[attr_id] = [];
                        }
                        var that_goods = that.goods;
                        var goods = [];
                        for (var k in goodslist[attr_id]) {
                            var item = goodslist[attr_id][k];
                            goods.push({
                                default_img: item["default_img"],
                                goods_name: item["goods_name"],
                                origin_price: item["origin_price"],
                                price: item["price"],
                                total_stock: item["total_stock"],
                                sub_title: item["sub_title"],
                                id: item["id"]
                            });
                        }
                        that.goods = {};
                        that_goods[attr_id] = goods;
                        that.goods = that_goods;
                    });
                },
                showTabs: function showTabs(index) {
                    if (this.tabid == index) {
                        return;
                    }
                    var tag = this.tag_list[index];
                    // console.log(tag);
                    this.attr_id = tag.id;
                    this.setData({
                        tabid: index
                    });
                    this.loadList();
                },
                // 购物车
                getcartByUserId: function getcartByUserId() {
                    var that = this;
                    app.get("mall/cart/getcartByUserId", {
                        table_id: this.table_id
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        } else if (res.data) {
                            that.setData({
                                shoppingCartList: res.data
                            });
                            that.shop_info = res.data.shop_info;
                        }
                    });
                },
                //商品数量减
                minus: function minus(e) {
                    var target = $(e.target);
                    var id = target.attr("data-id");
                    var shoppingCartList = this.shoppingCartList;
                    if (shoppingCartList.list[id].count < 1) {
                        shoppingCartList.list[id].count = 0;
                    } else {
                        shoppingCartList.list[id].count--;
                    }
                    this.setData({
                        shoppingCartList: shoppingCartList
                    });
                    this.addToCart({
                        count: shoppingCartList.list[id].count,
                        goods_spec_id: target.attr("data-goods_spec_id"),
                        //  $(input).attr("goods_spec_id"),
                        goods_id: target.attr("data-goods_id")
                    });
                },
                //商品数量加
                plus: function plus(e) {
                    var target = $(e.target);
                    var id = target.attr("data-id");
                    var shoppingCartList = this.shoppingCartList;
                    shoppingCartList.list[id].count++;
                    this.setData({
                        shoppingCartList: shoppingCartList
                    });
                    this.addToCart({
                        count: shoppingCartList.list[id].count,
                        goods_spec_id: target.attr("data-goods_spec_id"),
                        //  $(input).attr("goods_spec_id"),
                        goods_id: target.attr("data-goods_id")
                    });
                },
                //商品数量
                changeCount: function changeCount(e) {
                    var target = $(e.target);
                    var id = target.attr("data-id");
                    var count = target.val();
                    var shoppingCartList = this.shoppingCartList;
                    shoppingCartList.list[id].count = count;
                    this.setData({
                        shoppingCartList: shoppingCartList
                    });
                    this.addToCart({
                        count: count,
                        goods_spec_id: target.attr("data-goods_spec_id"),
                        //  $(input).attr("goods_spec_id"),
                        goods_id: target.attr("data-goods_id")
                    });
                },
                //加入购物车
                addToCart: function addToCart(post, callback) {
                    var that = this;
                    post.table_id = this.table_id;
                    app.get("/mall/cart/add", post, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        } else {
                            callback ? callback(res) : "";
                            that.setData({
                                shoppingCartList: res.data
                            });
                            if (res.data.count === 0) {
                                that.btn_cancel();
                            }
                        }
                    });
                },
                //清空购物车
                clearCart: function clearCart() {
                    var that = this;
                    app.get("mall/cart/clearCart", {
                        shop_id: this.shop_id
                    }, function(res) {
                        if (res.code != 200) {
                            app.alert(res.msg);
                        } else {
                            app.alert("恭喜,成功清空购物车!");
                            that.setData({
                                shoppingCartList: {
                                    nextText: "去结算"
                                }
                            });
                            that.btn_cancel();
                        }
                    });
                },
                //去结算
                settle_accounts: function settle_accounts() {
                    // var store_id = app.getStoreId();
                    this.$router.push({
                        name: "checkout",
                        params: {
                            table_id: this.table_id
                        }
                    });
                },
                //选规格
                buyNow: function buyNow(item_id, tab_id) {
                    // console.log(e);
                    var postData = {};
                    // var item_id = $(e.target).attr("data-item_id");
                    // var tab_id = $(e.target).attr("data-tab_id");
                    // console.log()
                    var data;
                    if (tab_id > -1 && item_id > -1) {
                        // console.log(goodslist);
                        data = goodslist[tab_id][item_id];
                        goods_spec = data.goods_spec;
                        data.goods_spec = {};
                    } else if (this.data.id) {
                        data = this.data;
                    } else {
                        app.alert("请选择商品");
                        return;
                    }
                    if (data.property_arr.length > 0 && this.choose_spec.spec_stock > 0) {
                        postData.goods_id = this.choose_spec.goods_id;
                        postData.goods_spec_id = this.choose_spec.id;
                    } else if (data.property_arr.length === 0) {
                        postData.goods_id = data.id;
                    } else if (this.popup2 == 1) {
                        app.alert("请选择商品规格");
                        return;
                    } else {
                        this.setData({
                            data: data
                        });
                        this.chooseSpec();
                        return;
                    }
                    //加入购车
                    this.addToCart(postData, function() {});
                    this.hide_choose_goods();
                },
                hide_choose_goods: function hide_choose_goods() {
                    goods_spec = {};
                    this.setData({
                        popup2: 0,
                        data: {},
                        choose_spec: {},
                        choose_property_data: {}
                    });
                },
                //弹出选规格
                chooseSpec: function chooseSpec() {
                    this.setData({
                        popup2: 1
                    });
                },
                //选规格
                chooseProperty: function chooseProperty(e) {
                    //console.log(e); 
                    var property = e.currentTarget.dataset.property;
                    var subProperty = e.currentTarget.dataset.subProperty;
                    var choose_property_data = this.choose_property_data;
                    choose_property_data[property] = subProperty;
                    this.setData({
                        choose_property_data: choose_property_data
                    });
                    var arr = [];
                    for (var i in choose_property_data) {
                        arr.push(choose_property_data[i]);
                    }
                    if (arr.length == this.data.property_arr.length) {
                        this.setData({
                            spec_keys_str: arr.join(" ")
                        });
                        var l = arr.length;
                        for (var j = 0; j < 5 - l; j++) {
                            arr.push("");
                        }
                        // console.log(arr,arr);
                        var spec_keys = arr.sort();
                        var spec_keys_str = spec_keys.join("_");
                        if (goods_spec[spec_keys_str] && goods_spec[spec_keys_str].spec_stock > 0) {
                            this.setData({
                                choose_spec: goods_spec[spec_keys_str]
                            });
                            this.setData({
                                disabled: 0
                            });
                        } else {
                            app.alert("已售空");
                            this.setData({
                                disabled: 1
                            });
                        }
                    }
                }
            }
        }).$mount("#app");
    };
    module.exports = controller;
});

"use strict";

define("./js/main", [ "app" ], function(require) {
    var PuthinkApp = require("app");
    //vue 组件
    // require('js/component');
    //zach
    //配置文件
    var params = {
        apiDomain: seajs.data.apiDomain ? seajs.data.apiDomain : "https://www.bestsmartbee.com/",
        //接口域名 不带"/"
        domain: "",
        //网站域名  不带"/",
        appname: seajs.data.appname,
        debug: seajs.data.debug ? seajs.data.debug : false,
        versions: seajs.data.versions ? seajs.data.versions : "6.8",
        userVersions: seajs.data.userVersions ? seajs.data.userVersions : "6.9"
    };
    //app 实例之后 ， 只执行一次
    PuthinkApp.afterInit = function() {
        var _hmt = _hmt || [];
    };
    //页面显示时引用，每次都会执行
    PuthinkApp.pageShow = function(params) {
        var name = params.name;
    };
    //实例化app
    window.app = new PuthinkApp(params);
    app.login(function() {
        app.init();
    });
});

"use strict";

define("./js/router", [], function(require, exports, module) {
    var Router = new VueRouter({
        routes: [ {
            path: "/:table_id",
            name: "index",
            page: "cache"
        }, {
            path: "/shop_id/:shop_id",
            name: "index",
            page: "cache"
        }, {
            path: "/checkout/:table_id",
            name: "checkout",
            title: "结算",
            page: "cache"
        } ]
    });
    module.exports = Router;
});

define("./template_js/checkout", [], function(require, exports, module) {
    return '<div class="page-content checkout">      <form bindsubmit="formSubmit">  <!-- 商品列表 --><div class="cart-goods" ><div class="cart-title" ><div class="s_left"> <image class=\'ico\' src=\'/apps/shop/images/112.png\'></image> {{data.shop_info.name}}</div><div class="s_right" v-if="data.business_hours">牌号：{{tableInfo.name}}</div><div class="clear"></div></div>   <div v-for="(items,idx) in data.tableCartList" >     <div class="user" style="padding: 10px 0px">         <img :src="items.user.avatarUrl">         <p>{{items.user.nickname}}</p>         <div class="clear"></div>      </div>    <div v-for="item in items.list" class="goods-item" @click=\'moreAct\' data-goods_spec_id="item.goods_spec_id" data-goods_id="item.goods_id">            <image class=\'image\' :src=\'item.default_img+"?imageviwe2/1/w/160/h/160"\'></image>            <div class=\'goods-info\' style="margin-top: 0">              <div class="title1 text-over-hidden" >{{item.goods_name}}</div>              <div class="light">{{item.attrs}}</div>             </div>             <div class=\'goods-count\'>x{{item.count}}</div>             <div class="goods-price">¥{{item.total_price}}</div>             <div class="clear"></div>     </div> </div> <div class=\'charge-item\'  v-for="charge in data.other_charge"> <div class="charge-item-left">{{charge.name}}</div> <div class="charge-item-right">{{charge.showPrice}}</div>  <div class="clear"></div></div><div class=\'remark\'>   <div class="remark-text">备注</div>   <input name="remark" placeholder="备注..." />     <div class=\'clear\'></div></div><div class=\'line\'></div><div class=\'goods-total-price\'>   共计{{data.count}}件商品 ， 小计{{data.total_price}}元</div></div><div   class=\'charge-item bgw pd10 chooseCard\' @click="chooseCard" > <div class="charge-item-left">{{card_title?"选择："+card_title:\'优惠券码\'}}</div> <div class="charge-item-right">选择优惠</div>  <image class=\'arrowright\' src=\'/apps/shop/images/arrowright.png\'></image>  <div class="clear"></div></div><div style=\'height:100px\'></div><div class="goods-bottom" >    <div class="goods-bottom-left" style="    margin-top: 13px;margin-left: 10px; text-align: left;"> ¥{{data.total_price}}      <span class="light" v-if="data.discounts>0">| 已优惠{{data.discounts}}元</span>     </div>    <div    :class="disabled?\'goods-bottom-right btn disabled\':\'goods-bottom-right btn\'" @click=\'formSubmit\' >马上下单</div></div></form></div>';
});

define("./template_js/index", [], function(require, exports, module) {
    return '<div class="page-content">       <div    class="shop-header background_color_1">       当前餐桌台号：{{tableInfo.name?tableInfo.name:\'无\'}}    </div>    <!-- 左边导 -->    <div class=\'good-tabs tabs\'>      <div class="scroll_div">                   <div  v-for="(attr,idx) in tag_list" @click=\'showTabs(idx)\' :class="idx==tabid?\'li on\':\'li\'" :data-id="idx">{{attr.name}}</div>                 </div>      </div><!-- 右边商品 -->     <div class="good-contents tab-contents">                    <div v-for="(attr,idx) in tag_list" :class="idx==tabid?\'tab-content\':\'hidden\'" >                                                        <!-- 商品列表开始 -->                  <div class="goods-item-1" :data-attr_id="attr.id">                                                                                                      <div class="goods-item" v-if="goods[attr.id]" v-for="(item,idx2) in goods[attr.id]">                     <div class="goods-item-img"> <img mode=\'widthFix\'  :src="item.default_img+\'?imageView2/1/w/160/h/160\'"/></div>                     <div class="goods-item-info">                          <div class="goods_title">{{item.goods_name}}</div>                          <div class="light" >{{item.sub_title}}</div>                          <div class="price s_left">¥ {{item.price}} </div><!-- 操作购物车 -->                        <div class="s_right modify ">                             <i v-if="goods_in_cart[item.id]" class="icon iconfont icon-jianshao s_left" :data-id="goods_in_cart[item.id].idx" :data-goods_spec_id="goods_in_cart[item.id].goods_spec_id" :data-goods_id="goods_in_cart[item.id].goods_id"  @click=\'minus\'></i>                          <input v-if="goods_in_cart[item.id]" type="number"  @blur="changeCount" :data-goods_spec_id="goods_in_cart[item.id].goods_spec_id" :data-goods_id="goods_in_cart[item.id].id" class="s_left txt-count" :data-id="goods_in_cart[item.id].idx" :value="goods_in_cart[item.id].count" maxlength="2" />                                                      <i v-if="goods_in_cart[item.id]" class="icon iconfont icon-zengjia s_left plus" :data-id="goods_in_cart[item.id].idx" :data-goods_spec_id="goods_in_cart[item.id].goods_spec_id" :data-goods_id="goods_in_cart[item.id].goods_id"   @click=\'plus\'></i>                                                  <i v-else class="icon iconfont icon-zengjia s_left plus" style="margin-top: 1px;" @click=\'buyNow(idx2,attr.id)\'></i>                      </div><!-- 操作购物车 -->                     </div>                     <div class="clear"></div>                   </div>                 <!-- 商品列表结束-->                                     </div>                 <div style=\'height:100px\'></div>              </div>       </div>      <!-- 结束商品 -->      <!-- 购物车 -->      <div style="height: 50px"></div><div class="goods-bottom background_color_3 color_3">              <div class="icon iconfont icon-03 cart" @click="show_popup">        <i class="icon iconfont icon-qicheqianlian-1-copy"></i>        <span class="background_color_1 color_1 cartAll"  v-if="shoppingCartList.count>0">{{shoppingCartList.count}}</span> </div>          <div class="goods-bottom-left"> <div style="line-height: 45px" v-if="shoppingCartList.total_price>0"> 合计：¥ <span id="priceAll">{{shoppingCartList.total_price}}</span> </div> </div>       <div :class="shoppingCartList.next ? \'goods-bottom-right btn2\': \'goods-bottom-right btn2 disabled\'" @click="settle_accounts">{{shoppingCartList.nextText?shoppingCartList.nextText:\'loading...\'}}</div></div><!--购物车列表  -->   <div @click=\'btn_cancel\' :class="popup==1?\'popupBg\':\'popupHide\'"></div> <div   :class="popup==1?\'shopping-cart popup modal-in\' :\'popupHide\'" style=\'max-height:80%\'>   <div class="title">      <span class="s_left buy-title">购物车</span>      <span class="dishes s_right" @click=\'clearCart\'>清空购物车</span>    </div>   <div class="order-list" >              <div class="ul" style="height: auto; overflow: visible;padding-bottom: 20px;">          <div v-for="(items,idx) in shoppingCartList.tableCartList" >          <div class="user">             <img :src="items.user.avatarUrl">             <p>{{items.user.nickname}}</p>             <div class="clear"></div>          </div>          <!-- 商品列表 -->          <div v-for="(item,idx) in items.list" >             <div class="li clearfix" >               <div class="s_left na ">                   {{item.goods_name}}            </div>           <div class="s_left modify ">                   <i class="icon iconfont icon-jianshao s_left" :data-id="idx" :data-goods_spec_id="item.goods_spec_id" :data-goods_id="item.goods_id"  @click=\'minus\'></i>                <input type="number" catchtap="edit" @blur="changeCount" :data-goods_spec_id="item.goods_spec_id" :data-goods_id="item.goods_id"  class="s_left txt-count" :data-id="idx" :value="item.count" maxlength="2" />                  <i class="icon iconfont icon-zengjia s_left" style="margin-top: 1px;" :data-id="idx" :data-goods_spec_id="item.goods_spec_id" :data-goods_id="item.goods_id"  @click=\'plus\'></i>            </div>            <div class="s_right pri ">    <span>¥{{item.price}}</span>  </div>             <div class=\'clear\'></div>            <div v-if="item.attrs" class="na-attr">{{item.attrs}}</div>              </div>           </div> <!-- 商品列表 -->          </div>        </div>          <div class="other-charge">                                   <div v-for="charge in shoppingCartList.other_charge" class="clearfix packing-cost">              <span class="s_left">{{charge.name}}</span>              <span class="s_right boxtotalprice">{{charge.showPrice}}</span>            </div>                      </div>        </div></div><!--购物车列表  --> <!--选规格弹出层-->   <div @click=\'hide_choose_goods\' :class="popup2==1?\'popupBg\':\'popupHide\'"></div>  <div :class="popup2==1?\'popup modal-in\':\'popupHide\'" style=\'max-height:80%;background: #fff;\'>     <div class="goodsItemBox">      <img  style=\'    float: left;width: 80px;\' :src=\'data.default_img+"?imageMogr2/thumbnail/200x"\' ></img>       <div class=\'goods-info\' style="padding-top: 0px">        <div class="title">{{data.goods_name}}</div>        <div class="goods-price">¥<span class=\'price\'>{{choose_spec.spec_price?choose_spec.spec_price:data.price}}</span></div>        </div>        <div class="clear"></div>        <div class="line"></div>   </div>   <div scroll-y class="choose_goods_items">       <div class="spec-box" v-for="(property,idx) in data.property_arr">     <div class=\'spec-name\'>{{property.name}}：</div>      <div class="spec-sub-list mgt10">         <div v-for="(sub_property,idx2) in property.sub"  class=\'spec-sub-name {{choose_property_data[property.name]==sub_property.text?"on":""}}\' data-property="{{property.name}}" data-sub-property="{{sub_property.text}}" @click=\'chooseProperty\'>{{sub_property.text}}</div>     <div class=\'clear\'></div>     </div>    </div>    </div>  <div class=\'buyNow mgt10\'>   <div  :class="disabled?\'btn btn2 disabled\':\'btn btn2\'" @click=\'buyNow(-1,-1)\' style="    width: 100%;" >加入购物车</div>   </div>    </div>  <!--弹出层-->  </div>';
});
